package com.nccsjz.back.user.web;

import org.apache.commons.lang.StringUtils;

import com.nccsjz.back.user.service.UserService;
import com.nccsjz.base.BaseAction;
import com.nccsjz.pojo.User;

/**
 * LoginAction类用于处理后台管理员的登录操作
 * 
 * @author jason 2009-10-14
 * @since 1.0
 */
@SuppressWarnings("serial")
public class UserAction extends BaseAction {

	/** user User 用于封装表单登录信息 */
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	/**
	 * login方法用于处理用户的登录操作
	 * 
	 * @return
	 * @throws Exception
	 */
	public String login() throws Exception {
		//检查用户对象是否为空
		if(user == null){
			return INPUT;
		}
		// 检查用户登录信息是否为空
		if (user != null && user.isUserNameBlank()) {
			addActionError("用户名不能为空！");
		}
		if (user != null && user.isPwdBlank()) {
			addActionError("密码不能为空！");
			return INPUT;
		}		
		// 检查提交用户信息在数据库中是否存在
		if (!new UserService().isLeagle(user)) {
			addActionError("用户名或密码有误，请检查！");
			return INPUT;
		}
		
		// 将用户信息保存至当前会话中
		getSession().put("userid", user.getUserid());
		getSession().put("username", user.getUsername());		
		return SUCCESS;
	}

	/**
	 * logout方法用于处理用户的登出操作
	 * 
	 * @return
	 * @throws Exception
	 */
	public String logout() throws Exception {
		// 删除保存在会话中所有信息
		getSession().clear();
		return DEFAULT;
	}

	/**
	 * changePwd方法用于修改用户密码
	 * 
	 * @return
	 * @throws Exception
	 */
	public String changePwd() throws Exception {
		String path = "pwd";
		// 检查密码是否填写
		if (user.isPwdBlank()) {
			addActionError("请填写新密码！");
		}
		if (user.isConfirmPwdBlank()) {
			addActionError("请填写确认密码");
			return path;
		}
		if (!StringUtils.equals(user.getPwd(), user.getConfirmPwd())) {
			addActionError("确认密码与新密码不符，请检查！");
			return path;
		}		
		//查找用户信息
		UserService userService = new UserService();
		User u = userService.findUserById(user.getUserid());
		//更新用户信息	
		u.setPwd(user.getPwd());
		if(new UserService().changePwd(u)){
			addActionMessage("您的密码已经修改成功！");
		}
		return path;
	}
}
